package com.ht.api.task.ad;

import cn.hutool.json.JSONObject;
import com.ht.api.business.ad.PlanHelper;
import com.ht.api.db.Db;
import com.ht.api.db.DbConfig;
import com.ht.api.db.Entity;
import com.ht.api.db.StreamLoadConfig;
import com.ht.api.db.task.TaskCallback;
import com.ht.api.db.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;

import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 旅程用户广告任务生成的回调
 * @author asq
 * @createTime 2025年3月12日 12:06:15
 */
@Slf4j
public class CreateSopUserAdTaskCallback implements TaskCallback{

	@Override
	public void callback(String groupId, JSONObject param) {
		// 获取任务组参数
		long tenantId = param.getLong("tenant_id");
		DataSource ds = DbConfig.useTenantDb(tenantId);
		StreamLoadConfig config = DbConfig.useTenantSLC(tenantId);

		// 生成缓存的key
		String dataKey = "taskgroup:data:" + groupId;
		String tenantKey = "taskgroup:tenant:" + groupId;

		// 从缓存中获取全部数据
		List<Entity> taskList = new ArrayList<>();
		Map<Object, Object> map = RedisUtil.entries(dataKey);
		map.values().stream().forEach(t -> {
			 List<Entity> list = (List<Entity>)t;
			taskList.addAll(list);
		});

		RedisUtil.delete(dataKey, tenantKey);

		Db.insertBatchWithStream(config, taskList);
	}



}
